Nun wir haben bei der Erläuterung die Systemaufrufe ablaufen gesehen, dass die mit einem Unterbrechungsbefehl
ausgelöst werden. Je nach Prozessor gibt es hier unterschiedliche Befehle oder Bezeichnungen für
diese Befehle. Funktionalverhalten, die sich schon sehr ähnlich beim x86 oder bei der Intel Familie
haben wir sowas wie int für ein Softwareinterrupt oder wenn wir Prozessoren von Motorola oder noch
alte Prozessoren von DEC sehen, dann spricht man von dem TREP. Beim PowerPC heute spricht man von
dem Systemcall SC oder wenn wir auch noch wiederum zurückgehen in die Historie von EBM System 370,
da waren es die Supervisor Records, die mit dem SVC Befehl und als Unterbrechungsbefehl
eben ausgelöst werden können. Nun, für den Intel stellt sich dann dabei folgendes Bild
letztendlich da, wo denn unterschiedliche Komponenten relevant sind. Einmal das
Maschinenprogramm, da wo der Maschinenbefehl ja selbst codiert vorliegt, dann haben wir
die Befehlsetzebene, die gewisse Mechanismen letztendlich definiert, damit man überhaupt in
der Lage ist ein Betriebssystemprogramm bei Ausführung eines solchen Unterbrechungsbefehl
denn zu aktivieren, nämlich den eigentlichen Händler, den man hat. Hier auf der Befehlsetzebene
hat man eine typischerweise eine Vektortabelle, wo letztendlich die Adresse eines solchen Händlers
enthalten ist und das, was die CPU dann letztendlich nur macht, ist, dass sie auf Basis eines
besonderen des Operanten zu diesem Unterbrechungsbefehl in der Lage ist, praktisch diese Händleradresse,
die wir hier rechts drüben haben, aus der Tabelle denn entsprechend heraus zu lokalisieren. Wichtig
ist, dass wenn man Systemaufwürfe mit Unterbrechungsbefehlen durchführt, dann wird die CPU
immer ihren ganz gewöhnlichen Unterbrechungszyklus durchlaufen. Hier konkret für den Intel heißt
das eigentlich, dass wenn so ein Intel Maschinenbefehl zur Ausführung kommt, dann wird der Prozessor
einen Prozessorstatus sichern, einen minimalen Prozessorstatus. Der muss also, umfasst hier
beim Intel nicht den kompletten Registersatz, aber der Program-Count, der Code-Segment und
im Wesentlichen auch das Flags-Register von dem x86 wird immer gesichert. Dann wird man
den Befehlszähler, den Instruction-Pointer aus diesem Vektor hier laden, das heißt,
einen Hauptspeicherzugriff machen müssen, denn dieser Vektor steht in einer Tabelle,
die Tabelle liegt im Hauptspeicher. Die Tabelle ist durchaus recht groß. Hier konkret Hex
80 bedeutet Eintrag Nummer 128 in dieser Vektor-Tabelle von dem Intel-Prozessor. Dort wird ein Eintrag
ausgelesen, um dann letztendlich die Anfangsadresse des Händlers, der Funktion im Betriebssystem
zu identifizieren, wo die Behandlung dieser Ausnahmesituation dann letztendlich stattfindet.
Und der Nebeneffekt ist eben dabei, dass man einen Moduswechsel durchführt, dass man von
dem nicht privilegierten Arbeitsmodus wechselt rüber in den privilegierten Arbeitsmodus.
Nun, wenn der Befehlsauffruf zum Ende kommt, der wird ja durch diese IRED-Operation händlerseitig
markiert, dann macht man es alles wieder rückgängig. Man wird den gesicherten Prozessor-Status
wieder herstellen und man wird dann zurückkehren in den nicht privilegierten Arbeitsmodus und
dann letztendlich als ersten Maschinenbefehl den auf der Maschinenprogramm-Ebene zur Ausführung
bringen, der diesem INT-Befehl folgt. Man springt zurück im Endeffekt. Das sind die
Aktionen, die hier als Folge eines solchen Unterbrechungsbefehls beim Systemaufruf stattfinden
werden. Was man sieht, ist eigentlich, dass man eine Ausnahmabehandlung macht, ohne dass
wirklich eine Ausnahmesituation existiert. Denn dieser Systemaufruf ist ja bewusst, der
ist ja codiert, er ist programmiert im Maschinenprogramm, ist eigentlich ganz normal. Dennoch
verwendet man einen Mechanismus, der eigentlich zum Exception-Handling verwendet wird, der
dafür gedacht ist, dass gewisse Aktivitäten innerhalb eines Betriebssystems gestartet
werden müssen, weil die CPU in eine Ausnahmesituation gelangt ist. Rein logisch kann man es schon
sagen, denn der Systemaufruf bedeutet ja letztendlich die partielle Interpretation, die dann durch
ein Betriebssystem vorzunehmen ist. Die CPU ist nicht in der Lage, den Systemaufruf zu
verstehen, zu begreifen und ruft deshalb zu Hilfe. Also man könnte schon sagen, es ist
eine Ausnahmesituation. Schaut man sich die Sache aber genauer an, dann ist es nicht eine
Ausnahmesituation, wie man letztendlich sie normalerweise versteht. Es sind ganz normale
Aktionen, die halt hier ausgelöst werden, diese Systemaufrufe. Man macht es über einen
Trip. Damit wird der gesamte Vorgang relativ schwergewichtig. Wenn man sich das mal so
Presenters
Zugänglich über
Offener Zugang
Dauer
00:15:20 Min
Aufnahmedatum
2020-05-09
Hochgeladen am
2020-05-10 00:56:19
Sprache
de-DE